package ventanas;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import bean.Estructura;
import recursos.MCB;
import recursos.MIFMantenimiento;
import recursos.Sesion;
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;

public class IFEstructura extends MIFMantenimiento{
	
	private static final long serialVersionUID = 1L;
	private MCB cboTipo;
	private MCB cboEstilo;
	private MCB cboMarca;
	private MCB cboModelo;
	
	public IFEstructura() {
		txtBCodigo.setSize(80, 20);
		scpBusqueda.setSize(395, 199);
		scpBusqueda.setLocation(10, 67);
		lblBBuscar.setText("Modelo");
		lblBBuscar.setLocation(258, 24);
		lblBOrden.setText("Marca");
		lblBDescripcion.setText("Estilo");
		lblBNombre.setText("Tipo");
		lblBNombre.setLocation(10, 24);
		txtBDescripcion.setSize(80, 20);
		txtBNombre.setSize(80, 20);
		txtBBuscar.setSize(80, 20);
		lblBDescripcion.setLocation(93, 24);
		lblDDescripcion.setLocation(10, 65);
		lblDBuscar.setText("Modelo");
		lblDBuscar.setLocation(190, 65);
		lblDDescripcion.setText("Marca");
		lblDOrden.setText("Estilo");
		chkDActivo.setLocation(374, 33);
		lblDActivo.setLocation(367, 20);
		lblDTipo.setLocation(122, 7);
		lblDOrden.setLocation(190, 19);
		lblDNombre.setText("Tipo");
		cboBActivo.setSize(64, 20);
		cboBActivo.setLocation(341, 42);
		cboBTipo.setLocation(377, 0);
		lblBTipo.setLocation(359, 3);
		lblBSituacion.setLocation(341, 24);
		txtBBuscar.setLocation(176, 42);
		txtBDescripcion.setLocation(93, 42);
		txtBNombre.setLocation(10, 42);
		txtBOrden.setLocation(293, 0);
		lblBOrden.setLocation(176, 24);
		lblBCodigo.setLocation(337, 2);
		txtBCodigo.setLocation(258, 42);
		lblBTipo.setVisible(false);
		cboBTipo.setVisible(false);
		txtBOrden.setVisible(false);
		lblBCodigo.setVisible(false);
		lblDTipo.setVisible(false);
		cboDTipo.setLocation(132, 4);
		cboDTipo.setVisible(false);
		txtDNombre.setVisible(false);
		pnDatos.setLocation(10, 11);
		txtDOrden.setVisible(false);
		txtDDescripcion.setVisible(false);
		txtDBuscar.setVisible(false);
		txtDBuscar.setBounds(70, 4, 70, 20);
		txtDDescripcion.setBounds(93, 4, 63, 20);
		txtDOrden.setLocation(70, 4);
		txtDNombre.setBounds(93, 4, 63, 20);
		
		cboTipo = new MCB("tbl_tipo_serie"," distinct descripcion","descripcion"," situ='01'");
		cboTipo.setBounds(10, 34, 174, 20);
		AutoCompleteDecorator.decorate(cboTipo);
		pnDatos.add(cboTipo);
		
		cboEstilo = new MCB("tbl_estilo","id","estilo"," situacion='01'");
		cboEstilo.setBounds(190, 35, 176, 20);
		AutoCompleteDecorator.decorate(cboEstilo);
		pnDatos.add(cboEstilo);
		
		cboMarca = new MCB("tbl_marca"," distinct marca","marca"," situacion='01'");
		cboMarca.setBounds(10, 79, 174, 20);
		AutoCompleteDecorator.decorate(cboMarca);
		pnDatos.add(cboMarca);
		
		cboModelo = new MCB("tbl_modelo"," distinct modelo","modelo"," situacion='01'");
		cboModelo.setBounds(190, 79, 210, 20);
		AutoCompleteDecorator.decorate(cboModelo);
		pnDatos.add(cboModelo);
		
		setTitle(getTitle() + "-" + Sesion.tfiMantenimientoEstructura);
		registrarCabecera();
		activaControles();
		limpiarTabla();
		
		tbBusqueda.addKeyListener(new KeyAdapter() {
			@Override
			public void keyReleased(KeyEvent e) {
				pintar();
			}
		});
		tbBusqueda.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				pintar();
			}
		});
	}
	
	public void cargarTabla(List<Estructura> listado) {
		limpiarTabla();
		for (Estructura obj : listado) {
			Object datos[] = {obj.getId(),obj.getTipo(),obj.getEstilo(),obj.getMarca(),obj.getModelo(),obj.getSituacion()};
			dtm.addRow(datos);
		}
		setResultadoBusqueda(tbBusqueda.getRowCount());
	}
	
	public void cargarTabla(Estructura obj) {
		limpiarTabla();
		Object datos[] = {obj.getId(),obj.getTipo(),obj.getEstilo(),obj.getMarca(),obj.getModelo(),obj.getSituacion()};
		dtm.addRow(datos);
		setResultadoBusqueda(tbBusqueda.getRowCount());
	}

	@Override
	public void limpiarTabla() {
		tbBusqueda.setModel(dtm = new DefaultTableModel(datos, cabecera));
		setResultadoBusqueda(tbBusqueda.getRowCount());	
		ocultarColumna();
		TableColumn colTipo = tbBusqueda.getColumn(1);
		TableColumn colEstilo = tbBusqueda.getColumn(2);
		TableColumn colMarca = tbBusqueda.getColumn(3);
		TableColumn colModelo = tbBusqueda.getColumn(4);
		TableColumn colSit = tbBusqueda.getColumn(5);
		
		colTipo.setPreferredWidth(100);
		colEstilo.setPreferredWidth(160);
		colMarca.setPreferredWidth(220);
		colModelo.setPreferredWidth(180);
		colSit.setPreferredWidth(40);
	}
	
	@Override
	protected void registrarCabecera() {
		cabecera = new String[6];
		cabecera[0] = "id";
		cabecera[1] = "Tipo";
		cabecera[2] = "Estilo";
		cabecera[3] = "Marca";
		cabecera[4] = "Modelo";
		cabecera[5] = "Sit.";
	}

	private void pintar(){
		if (tbBusqueda.getSelectedRow() > -1) {
			String id = tbBusqueda.getValueAt(
					tbBusqueda.getSelectedRow(), 0).toString();
			String tipo = tbBusqueda.getValueAt(
					tbBusqueda.getSelectedRow(), 1).toString();
			String estilo = tbBusqueda.getValueAt(
					tbBusqueda.getSelectedRow(), 2).toString();
			String marca = tbBusqueda.getValueAt(
					tbBusqueda.getSelectedRow(), 3).toString();
			String modelo = tbBusqueda.getValueAt(
					tbBusqueda.getSelectedRow(), 4).toString();
			String activo = tbBusqueda.getValueAt(
					tbBusqueda.getSelectedRow(), 5).toString().trim();
			if(activo.equals("01")){
				setDActivo(true);
			}else{
				setDActivo(false);
			}
			setId(id);
			setTipo(tipo);
			setEstilo(estilo);
			setModelo(modelo);
			setMarca(marca);
		}
	}
	
	public void setTipo(String tipo){
		cboTipo.setSelectedItem(tipo);
	}
	
	public void setEstilo(String estilo){
		cboEstilo.setSelectedItem(estilo);
	}
	
	public void setMarca(String marca){
		cboMarca.setSelectedItem(marca);
	}
	
	public void setModelo(String modelo){
		cboModelo.setSelectedItem(modelo);
	}
	
	public String getTipo(){
		String tipo = "";
		try {
			tipo = cboTipo.getSelectedItem().toString().trim();
		} catch (Exception e) {
			return tipo;
		}
		return tipo;
	}
	
	public String getEstilo(){
		String estilo = "";
		try {
			estilo = cboEstilo.getSelectedItem().toString().trim();
		} catch (Exception e) {
			return estilo;
		}
		return estilo;
	}
	
	public String getMarca(){
		String marca = "";
		try {
			marca = cboMarca.getSelectedItem().toString().trim();
		} catch (Exception e) {
			return marca;
		}
		return marca;
	}
	
	public String getModelo(){
		String modelo = "";
		try {
			modelo = cboModelo.getSelectedItem().toString().trim();
		} catch (Exception e) {
			return modelo;
		}
		return modelo;
	}
	
	private void ocultarColumna(){
		tbBusqueda.getColumnModel().getColumn(0).setMaxWidth(0);
		tbBusqueda.getColumnModel().getColumn(0).setMinWidth(0);
		tbBusqueda.getTableHeader().getColumnModel().getColumn(0).setMaxWidth(0);
		tbBusqueda.getTableHeader().getColumnModel().getColumn(0).setMinWidth(0);
	}
	
	public void activaControles(){
		btnNuevo.setEnabled(true);
		btnModificar.setEnabled(true);
		btnEliminar.setEnabled(true);

		scpBusqueda.setEnabled(true);
		txtBCodigo.setEnabled(true);
		txtBNombre.setEnabled(true);
		txtBDescripcion.setEnabled(true);
		txtBBuscar.setEnabled(true);
		txtBOrden.setEnabled(true);
		cboBTipo.setEnabled(true);
		cboBActivo.setEnabled(true);
		
		cboTipo.setEnabled(false);
		cboMarca.setEnabled(false);
		cboModelo.setEnabled(false);
		cboEstilo.setEnabled(false);
		chkDActivo.setEnabled(false);
		
		btnCancelar.setEnabled(false);
		btnGuardar.setEnabled(false);
	}
	
	public void desactivaControles(){
		btnNuevo.setEnabled(false);
		btnModificar.setEnabled(false);
		btnEliminar.setEnabled(false);

		scpBusqueda.setEnabled(false);
		txtBCodigo.setEnabled(false);
		txtBNombre.setEnabled(false);
		txtBDescripcion.setEnabled(false);
		txtBBuscar.setEnabled(false);
		txtBOrden.setEnabled(false);
		cboBTipo.setEnabled(false);
		cboBActivo.setEnabled(false);
		limpiarTabla();

		btnCancelar.setEnabled(true);
		btnGuardar.setEnabled(true);
		
		cboTipo.setEnabled(true);
		cboMarca.setEnabled(true);
		cboModelo.setEnabled(true);
		cboEstilo.setEnabled(true);
		chkDActivo.setEnabled(true);
	}
	
}
